import request from './request';
import type { getMyPieceListResponse, addUpdateMyPieceRequest } from '@/types/piece';
import { ListQueryParams } from '@/composables/useList';
import adminRequest, { baseURL } from './adminRequest';

// ========================= 文章相关 ==========================


/**
 * 获取我的文章列表
 * @param {ListQueryParams} data - 获取文章列表所需的参数
 * @returns {Promise} -  
 */
export const getMyPieceList = (data: ListQueryParams) => {  
  return request({     
    url: '/articles',   
    method: 'get',       
    params:  data        
  });
};
/**
 * 获取用户收藏文章列表的函数
 * @param {getMyPieceListResponse} data - 包含获取收藏列表所需参数的响应对象
 * @returns {Promise} -  
 */
export const getMyFavoriteList = (data: getMyPieceListResponse) => {  
  return request({    
    url: '/articles',   
    method: 'get',       
    params:  data        
  });
};
/**
 * 获取我的关注列表的函数
 * @param {getMyPieceListResponse} data - 获取文章列表的请求参数
 * @returns {Promise}  
 */
export const getMyFollowList = (data: getMyPieceListResponse) => {   
  return request({     
    url: '/articles',   
    method: 'get',       
    params:  data        
  });
};

/**
 * 新增文章
 * @param {Object} data - 新增文章所需的参数
 * @returns {Promise} - 返回一个Promise对象，包含请求结果
 */
export const addMyPiece = (data: addUpdateMyPieceRequest) => {
  return request({
    url: '/articles',
    method: 'post',
    data
  });
};

/**
 * 更新文章
 * @param {Object} data - 更新文章所需的参数
 * @returns {Promise} - 返回一个Promise对象，包含请求结果
 */
export const updateMyPiece = (id: string, data: addUpdateMyPieceRequest) => {
  return request({
    url: `/articles/${id}`,
    method: 'put',
    data
  });
};

/**
 * 获取文章详情
 * @param {string} id - 文章ID
 * @returns {Promise} - 返回一个Promise对象，包含请求结果
 */
export const getArticleById = (id: string) => {
  return request({
    url: `/articles/${id}`,
    method: 'get'
  });
};

/**
 * 删除文章
 * @param {number} id - 文章ID
 * @returns {Promise} - 返回一个Promise对象，包含请求结果
 */
export const deleteMyPiece = (id: number) => {
  return request({
    url: `/articles/${id}`,
    method: 'delete'
  });
};

/**
 * 文章提交审核
 * @param {number} id - 文章ID
 * @returns {Promise} - 返回一个Promise对象，包含请求结果
 */
export const submitArticleForReview = (id: number) => {
  return request({
    url: `/articles/${id}/review`,
    method: 'post'
  });
};

/**
 * 获取待审核文章列表
 * @param {ListQueryParams} data - 获取待审核文章列表所需的参数
 * @returns {Promise} - 返回一个Promise对象，包含请求结果
 */
export const getPendingArticles = (data: ListQueryParams) => {
  return adminRequest({
    url: `${baseURL}/articles`,
    method: 'get',
    params: data
  });
};

/**
 * 审核文章
 * @param {number} id - 文章ID
 * @param {Object} data - 审核结果参数 { deal: 1 | 2 } 1表示通过，2表示拒绝
 */
export const reviewArticle = (id: number, data: { deal: 1 | 2 }) => {
  return adminRequest({
    url: `${baseURL}/articles/${id}/review`,
    method: 'put',
    data
  });
};

/**
 * 根据列表参数获取文章墙列表
 * @param {ListQueryParams} data - 查询参数对象，包含分页、过滤等条件
 * @returns {Promise} 返回一个Promise对象，包含请求结果
 */
export const getArticleByList = (data: ListQueryParams) => {
  return request({  // 发起HTTP请求
    url: '/search/articles',  // 请求的API端点
    method: 'get',  // 请求方法为GET
    params:data
  });
};
/**
 * 点赞文章的函数
 * @param {number|string} id - 文章ID，可以是数字或字符串类型
 * @returns {Promise} 返回一个Promise对象，包含请求结果
 */
export const postLike = (id:number|string) => {  // 定义点赞函数，接受文章ID作为参数
  return request({  // 发起HTTP请求
    url: `/articles/${id}/like`,  // 请求的API端点
    method: 'post'  // 请求方法为GET
  });
};
/**
 * 获取公共文章详情
 * @param {string} id - 文章ID
 * @returns {Promise} - 返回一个Promise对象，包含请求结果
 */
export const getPublicArticleById = (id: string) => {
  return request({
    url: `/search/articles/${id}`,
    method: 'get'
  });
};